1
Từ Bộ Dữ Liệu Nhỏ Đến Sự Hỗn Loạn Thực Tế
EvoClass-AI002Lecture 5
00:00

1. Đóng Cửa Khoảng Cách: Cơ Sở Tải Dữ Liệu

Các mô hình Học Sâu phát triển mạnh với dữ liệu sạch và nhất quán, nhưng các bộ dữ liệu thực tế vốn dĩ rất lộn xộn. Chúng ta cần chuyển từ các bộ benchmark đã đóng gói sẵn (như MNIST) sang quản lý các nguồn dữ liệu không cấu trúc, nơi việc tải dữ liệu bản thân là một nhiệm vụ điều phối phức tạp. Nền tảng của quá trình này nằm ở các công cụ chuyên dụng của PyTorch cho quản lý dữ liệu.

Thách thức chính là chuyển đổi dữ liệu thô, rải rác (hình ảnh, văn bản, tệp âm thanh) được lưu trữ trên đĩa thành định dạng Tensor của PyTorch được tổ chức chặt chẽ và chuẩn hóa, định dạng Tensor mà GPU mong đợi. Điều này đòi hỏi logic tùy chỉnh cho việc lập chỉ mục, tải dữ liệu, tiền xử lý và cuối cùng là nhóm batch.

Những Thách Thức Chính trong Dữ Liệu Thực Tế

  • Hỗn loạn Dữ Liệu: Dữ liệu rải rác qua nhiều thư mục, thường chỉ được lập chỉ mục bằng các tệp CSV.
  • Cần Tiền Xử Lý: Hình ảnh có thể cần thay đổi kích thước, chuẩn hóa hoặc tăng cường trước khi chuyển sang tensor.
  • Mục Tiêu Hiệu Suất: Dữ liệu phải được cung cấp đến GPU dưới dạng các batch tối ưu, không chặn để tối đa tốc độ huấn luyện.
Giải Pháp của PyTorch: Tách Rời Nhiệm Vụ
PyTorch thiết lập sự phân tách trách nhiệm: lớp Dataset xử lý "cái gì" (làm thế nào để truy cập một mẫu và nhãn đơn lẻ), trong khi lớp DataLoader xử lý "cách thức" (nhóm batch hiệu quả, trộn ngẫu nhiên và giao hàng đa luồng).
data_pipeline.py
TERMINALbash — data-env
> Ready. Click "Run" to execute.
>
TENSOR INSPECTOR Live

Run code to inspect active tensors
Question 1
What is the primary role of a PyTorch Dataset object?
To organize samples into mini-batches and shuffle them.
To define the logic for retrieving a single, preprocessed sample.
To perform the matrix multiplication inside the model.
Question 2
Which DataLoader parameter enables parallel loading of data using multiple CPU cores?
device_transfer
batch_size
num_workers
async_load
Question 3
If your raw images are all different sizes, which component is primarily responsible for resizing them to a uniform dimension (e.g., $224 \times 224$)?
The DataLoader's collate_fn.
The GPU's dedicated image processor.
The Transformation function applied within the Dataset's __getitem__ method.
Challenge: The Custom Image Loader Blueprint
Define the structure needed for real-world image classification.
You are building a CustomDataset for 10,000 images indexed by a single CSV file containing paths and labels.
Step 1
Which mandatory method must return the total number of samples?
Solution:
The __len__ method.
Concept: Defines the epoch size.
Step 2
What is the correct order of operations inside __getitem__(self, index)?
Solution:
1. Look up file path using index.
2. Load the raw data (e.g., Image).
3. Apply the necessary transforms.
4. Return the processed Tensor and Label.